import { DatePipe } from '@angular/common';
import { Component, OnInit, ViewChild } from '@angular/core';
import { apiConf } from '@conf/api.conf';
import {
  SFComponent, SFSchema, SFUISchema,
  SFUploadWidgetSchema
} from '@delon/form';
import { _HttpClient } from '@delon/theme';
import { EAEnvironmentService } from '@shared';
import { NzMessageService } from 'ng-zorro-antd/message';
import { NzModalRef } from 'ng-zorro-antd/modal';
import { Observable, Observer } from 'rxjs';
import { WaybillManagementServe } from 'src/app/routes/waybill-management/services/waybill-management.service';
import format from 'date-fns/format';

@Component({
  selector: 'app-order-management-vehicle-sure-depart',
  templateUrl: './sure-depart.component.html',
  styleUrls: ['./sure-depart.component.less'],
  providers: [DatePipe]
})
export class VehicleSureDepartComponent implements OnInit {
  record: any = {};
  i: any;
  Status: any;
  data: any = {
    weight: '',
    volume: ''
  };
  @ViewChild('sf', { static: false }) sf!: SFComponent;
  schema: SFSchema = {};
  ui: SFUISchema = {};
  constructor(
    private modal: NzModalRef,
    private msgSrv: NzMessageService,
    public http: _HttpClient,
    public service: WaybillManagementServe,
    private envSrv: EAEnvironmentService,
    private datePipe: DatePipe
  ) { 

  }

  ngOnInit(): void {
    console.log(this.i);
    this.initSF();

    this.data.weight = this.i?.weight;
    this.i.time = this.i.loadingTime;

  }
  initSF() {
    if (this.Status === 1) {
      this.schema = {
        properties: {
          time: {
            type: 'string',
            title: '装货时间',
            format: 'date-time'
          },
          no4: {
            type: 'string',
            title: '',
            ui: {
              widget: 'text'
            },
            default: '单张大小不超过5M，支持.jpg、.jpeg和 .png格式'
          },
          imgUrl1: {
            type: 'string',
            title: '装货凭证',
            ui: {
              widget: 'upload',
              action: apiConf.fileUpload,
              accept: 'image/png,image/jpeg,image/jpg,image/gif',
              limit: 1,
              limitFileCount: 1,
              resReName: 'data.fullFileWatermarkPath',
              urlReName: 'data.fullFileWatermarkPath',
              descriptionI18n: '提货单',
              data: {
                appId: this.envSrv.env.appId,
                content: [
                  `上传用户:${this.i?.driverName}(${this.i?.driverTelephone})`,
                  `上传位置:${this.i?.loadDetailedAddress}`,
                  `上传时间:${format(new Date(), 'yyyy-MM-dd HH:mm:ss')}`,
                ],
                position: '2',
                fontSize: '100'
              },
              name: 'multipartFile',
              beforeUpload: (file: any, fileList: any) => {
                return new Observable((observer: Observer<boolean>) => {
                  const isLt1M = file.size / 1024 / 1024 < 5;
                  const fileType = 'image/png,image/jpeg,image/jpg,image/gif';
                  if (fileType.indexOf(file.type) === -1) {
                    this.service.msgSrv.warning('图片格式不正确！');
                    observer.complete();
                    return;
                  }
                  if (!isLt1M) {
                    this.service.msgSrv.warning('图片大小超过5M!');
                    observer.complete();
                    return;
                  }
                  observer.next(isLt1M);
                  observer.complete();
                });
              },
              multiple: false,
              listType: 'picture-card'
            } as SFUploadWidgetSchema
          },
          imgUrl2: {
            type: 'string',
            title: '',
            ui: {
              widget: 'upload',
              action: apiConf.waterFileUpload,
              accept: 'image/png,image/jpeg,image/jpg,image/gif',
              limit: 1,
              limitFileCount: 1,
              resReName: 'data.fullFileWatermarkPath',
              urlReName: 'data.fullFileWatermarkPath',
              descriptionI18n: '人车货照片',
              data: {
                appId: this.envSrv.env.appId,
                content: [
                  `上传用户:${this.i?.driverName}(${this.i?.driverTelephone})`,
                  `上传位置:${this.i?.loadDetailedAddress}`,
                  `上传时间:${format(new Date(), 'yyyy-MM-dd HH:mm:ss')}`,
                ],
                position: '2',
                fontSize: '100'
              },
              name: 'multipartFile',
              beforeUpload: (file: any, fileList: any) => {
                return new Observable((observer: Observer<boolean>) => {
                  const isLt1M = file.size / 1024 / 1024 < 5;
                  const fileType = 'image/png,image/jpeg,image/jpg,image/gif';
                  if (fileType.indexOf(file.type) === -1) {
                    this.service.msgSrv.warning('图片格式不正确！');
                    observer.complete();
                    return;
                  }
                  if (!isLt1M) {
                    this.service.msgSrv.warning('图片大小超过5M!');
                    observer.complete();
                    return;
                  }
                  observer.next(isLt1M);
                  observer.complete();
                });
              },
              multiple: false,
              listType: 'picture-card'
            } as SFUploadWidgetSchema
          }
        },
        required: ['time']
      };
    } else {
      this.schema = {
        properties: {
          time: {
            type: 'string',
            title: '装货时间',
            format: 'date-time'
          },
          weight: {
            type: 'string',
            title: '装货重量',
            ui: {
              widget: 'custom'
            }
          },
          volume: {
            type: 'string',
            title: '装货体积',
            ui: {
              widget: 'custom'
            }
          },
          no4: {
            type: 'string',
            title: '',
            ui: {
              widget: 'text'
            },
            default: '单张大小不超过5M，支持.jpg、.jpeg和 .png格式'
          },
          imgUrl1: {
            type: 'string',
            title: '装货凭证',
            ui: {
              widget: 'upload',
              action: apiConf.waterFileUpload,
              accept: 'image/png,image/jpeg,image/jpg,image/gif',
              limit: 1,
              limitFileCount: 1,
              resReName: 'data.fullFileWatermarkPath',
              urlReName: 'data.fullFileWatermarkPath',
              descriptionI18n: '提货单',
              data: {
                appId: this.envSrv.env.appId,
                content: [
                  `上传用户:${this.i?.driverName}(${this.i?.driverTelephone})`,
                  `上传位置:${this.i?.loadDetailedAddress}`,
                  `上传时间:${format(new Date(), 'yyyy-MM-dd HH:mm:ss')}`,
                ],
                position: '2',
                fontSize: '100'
              },
              name: 'multipartFile',
              beforeUpload: (file: any, fileList: any) => {
                return new Observable((observer: Observer<boolean>) => {
                  const isLt1M = file.size / 1024 / 1024 < 5;
                  const fileType = 'image/png,image/jpeg,image/jpg,image/gif';
                  if (fileType.indexOf(file.type) === -1) {
                    this.service.msgSrv.warning('图片格式不正确！');
                    observer.complete();
                    return;
                  }
                  if (!isLt1M) {
                    this.service.msgSrv.warning('图片大小超过5M!');
                    observer.complete();
                    return;
                  }
                  observer.next(isLt1M);
                  observer.complete();
                });
              },
              multiple: false,
              listType: 'picture-card'
            } as SFUploadWidgetSchema
          },
          imgUrl2: {
            type: 'string',
            title: '',
            ui: {
              widget: 'upload',
              action: apiConf.waterFileUpload,
              accept: 'image/png,image/jpeg,image/jpg,image/gif',
              limit: 1,
              limitFileCount: 1,
              resReName: 'data.fullFileWatermarkPath',
              urlReName: 'data.fullFileWatermarkPath',
              descriptionI18n: '人车货照片',
              data: {
                appId: this.envSrv.env.appId,
                content: [
                  `上传用户:${this.i?.driverName}(${this.i?.driverTelephone})`,
                  `上传位置:${this.i?.loadDetailedAddress}`,
                  `上传时间:${format(new Date(), 'yyyy-MM-dd HH:mm:ss')}`,
                ],
                position: '2',
                fontSize: '100'
              },
              name: 'multipartFile',
              beforeUpload: (file: any, fileList: any) => {
                return new Observable((observer: Observer<boolean>) => {
                  const isLt1M = file.size / 1024 / 1024 < 5;
                  const fileType = 'image/png,image/jpeg,image/jpg,image/gif';
                  if (fileType.indexOf(file.type) === -1) {
                    this.service.msgSrv.warning('图片格式不正确！');
                    observer.complete();
                    return;
                  }
                  if (!isLt1M) {
                    this.service.msgSrv.warning('图片大小超过5M!');
                    observer.complete();
                    return;
                  }
                  observer.next(isLt1M);
                  observer.complete();
                });
              },
              multiple: false,
              listType: 'picture-card'
            } as SFUploadWidgetSchema
          }
        },
        required: ['time', 'weight', 'volume']
      };
    }

    this.ui = {
      '*': {
        spanLabelFixed: 100,
        grid: { span: 20 }
      },
      $imgUrl1: { grid: { span: 12 } },
      $imgUrl2: { grid: { span: 12 } }
    };
  }
  save(value: any): void {
    if (this.Status === 1) {
      if (!value?.time) {
        this.service.msgSrv.warning('装货时间为空！');
        return;
      }
      const params = {
        id: this.i.id,
        imgUrl1: value?.imgUrl1?.data?.fullFilePath,
        imgUrl2: value?.imgUrl2?.data?.fullFilePath,
        time: value?.time
      };
      params.time = this.datePipe.transform(value.time, 'yyyy-MM-dd HH:mm:ss ');
      this.service.request(this.service.$api_get_insertWholeStartCarInfo, params).subscribe(res => {
        if (res) {
          this.service.msgSrv.success('确认发车成功！');
          this.modal.destroy(true);
        }
      });
    } else {
      if (!value?.time) {
        this.service.msgSrv.warning('装货时间为空！');
        return;
      }
      if (!this.data?.volume) {
        this.service.msgSrv.warning('装货重量为空！');
        return;
      }
      if (!this.data?.weight) {
        this.service.msgSrv.warning('装货体积为空！');
        return;
      }
      console.log(value);
      const params = {
        id: this.i.id,
        imgUrl1: value?.imgUrl1?.data?.fullFilePath,
        imgUrl2: value?.imgUrl2?.data?.fullFilePath,
        time: value?.time,
        volume: this.data?.volume,
        weight: this.data?.weight
      };
      params.time = this.datePipe.transform(value.time, 'yyyy-MM-dd HH:mm:ss ');
      this.service.request(this.service.$api_get_insertBulkStartCarInfo, params).subscribe(res => {
        if (res) {
          this.service.msgSrv.success('确认发车成功！');
          this.modal.destroy(true);
        }
      });
    }
  }

  close(): void {
    this.modal.destroy(true);
  }
}
